package com.ruoyi.business.service.impl;

import java.lang.reflect.Method;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.business.domain.BilletTempHistory;
import com.ruoyi.business.vo.BaseVo;
import com.ruoyi.business.vo.BaseWaterVo;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.business.mapper.RadtubeTempHistoryMapper;
import com.ruoyi.business.domain.RadtubeTempHistory;
import com.ruoyi.business.service.IRadtubeTempHistoryService;
import com.ruoyi.common.utils.CommentUtil;

/**
 * 辐射管温度历史记录Service业务层处理
 * 
 * @author qiancheng
 * @date 2025-10-11
 */
@Service
public class RadtubeTempHistoryServiceImpl extends ServiceImpl<RadtubeTempHistoryMapper, RadtubeTempHistory> implements IRadtubeTempHistoryService
{
    @Autowired
    private RadtubeTempHistoryMapper radtubeTempHistoryMapper;

    /**
     * 查询辐射管温度历史记录
     * 
     * @param id 辐射管温度历史记录主键
     * @return 辐射管温度历史记录
     */
    @Override
    public RadtubeTempHistory selectRadtubeTempHistoryById(Long id)
    {
        return radtubeTempHistoryMapper.selectRadtubeTempHistoryById(id);
    }

    /**
     * 查询辐射管温度历史记录列表
     * 
     * @param radtubeTempHistory 辐射管温度历史记录
     * @return 辐射管温度历史记录
     */
    @Override
    public List<RadtubeTempHistory> selectRadtubeTempHistoryList(RadtubeTempHistory radtubeTempHistory)
    {
        return radtubeTempHistoryMapper.selectRadtubeTempHistoryList(radtubeTempHistory);
    }

    /**
     * 新增辐射管温度历史记录
     * 
     * @param radtubeTempHistory 辐射管温度历史记录
     * @return 结果
     */
    @Override
    public int insertRadtubeTempHistory(RadtubeTempHistory radtubeTempHistory)
    {
        radtubeTempHistory.setCreateTime(DateUtils.getNowDate());
        return radtubeTempHistoryMapper.insert(radtubeTempHistory);
    }

    /**
     * 修改辐射管温度历史记录
     * 
     * @param radtubeTempHistory 辐射管温度历史记录
     * @return 结果
     */
    @Override
    public int updateRadtubeTempHistory(RadtubeTempHistory radtubeTempHistory)
    {
        radtubeTempHistory.setUpdateTime(DateUtils.getNowDate());
        return radtubeTempHistoryMapper.updateRadtubeTempHistory(radtubeTempHistory);
    }

    /**
     * 批量删除辐射管温度历史记录
     * 
     * @param ids 需要删除的辐射管温度历史记录主键
     * @return 结果
     */
    @Override
    public int deleteRadtubeTempHistoryByIds(Long[] ids)
    {
        return radtubeTempHistoryMapper.deleteRadtubeTempHistoryByIds(ids);
    }

    /**
     * 删除辐射管温度历史记录信息
     * 
     * @param id 辐射管温度历史记录主键
     * @return 结果
     */
    @Override
    public int deleteRadtubeTempHistoryById(Long id)
    {
        return radtubeTempHistoryMapper.deleteRadtubeTempHistoryById(id);
    }

    /**
     * 实验平台管理->>立式四级页面->>辐射管温度均匀性测试
     * @return
     */
    @Override
    public BaseWaterVo getRadTubeSurfTemps(Date importDay, String startTime, String endTime) {
        List<RadtubeTempHistory> radtubeTempHistories =
                radtubeTempHistoryMapper.selectRadtubeTempHistorys(importDay, startTime, endTime);
        if (radtubeTempHistories == null || radtubeTempHistories.isEmpty()) {
            return new BaseWaterVo();
        }
        // 初始化返回对象
        BaseWaterVo result = new BaseWaterVo();
        List<String> xAxis = new ArrayList<>();
        List<BaseVo> yAxis = new ArrayList<>();

        // 如果没有数据，直接返回空结构
        if (radtubeTempHistories == null || radtubeTempHistories.isEmpty()) {
            result.setXAxis(xAxis);
            result.setYAxis(yAxis);
            return result;
        }

        // 初始化各辐射管的温度数据列表
        List<String> c1Data = new ArrayList<>();
        List<String> c2Data = new ArrayList<>();
        List<String> c3Data = new ArrayList<>();
        List<String> c4Data = new ArrayList<>();
        List<String> c5Data = new ArrayList<>();
        List<String> c6Data = new ArrayList<>();
        List<String> c7Data = new ArrayList<>();
        List<String> c8Data = new ArrayList<>();
        List<String> c9Data = new ArrayList<>();
        List<String> c10Data = new ArrayList<>();

        // 遍历数据，填充X轴和各Y轴序列
        for (RadtubeTempHistory history : radtubeTempHistories) {
            // X轴：导入时间（时分格式）
            xAxis.add(history.getImportTime());

            // Y轴：各辐射管温度数据
            c1Data.add(history.getC1Temp());
            c2Data.add(history.getC2Temp());
            c3Data.add(history.getC3Temp());
            c4Data.add(history.getC4Temp());
            c5Data.add(history.getC5Temp());
            c6Data.add(history.getC6Temp());
            c7Data.add(history.getC7Temp());
            c8Data.add(history.getC8Temp());
            c9Data.add(history.getC9Temp());
            c10Data.add(history.getC10Temp());
        }

        // 封装各辐射管的温度序列到BaseVo
        yAxis.add(createBaseVo("C1", c1Data));
        yAxis.add(createBaseVo("C2", c2Data));
        yAxis.add(createBaseVo("C3", c3Data));
        yAxis.add(createBaseVo("C4", c4Data));
        yAxis.add(createBaseVo("C5", c5Data));
        yAxis.add(createBaseVo("C6", c6Data));
        yAxis.add(createBaseVo("C7", c7Data));
        yAxis.add(createBaseVo("C8", c8Data));
        yAxis.add(createBaseVo("C9", c9Data));
        yAxis.add(createBaseVo("C10", c10Data));

        // 设置返回数据
        result.setXAxis(xAxis);
        result.setYAxis(yAxis);

        return result;
    }

    /**
     * 创建BaseVo对象
     * @param name 辐射管名称
     * @param data 温度数据列表
     * @return BaseVo实例
     */
    private BaseVo createBaseVo(String name, List<String> data) {
        BaseVo vo = new BaseVo();
        vo.setName(name);
        vo.setData(data);
        return vo;
    }

}
